<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Base extends Model
{
    use HasFactory,SoftDeletes;
    protected $deleteTime = 'deleted_at';
    /**
     * 不能被批量赋值的属性
     *拒绝不添加的字段 如果不添加这个你是用模型的create/save都会报错，应该提示的是不允许添加字段
     * @var array
     */
    protected $guarded = [];


    /**
     * 模型公众方法，递归
     * @param $data 传递的数据
     * @param $pid  pid
     * @param $html
     * @param $level 级别
     * @return array
     */
    public function treeLevel($data, $pid = 0, $html = '--', $level = 0)
    {
        //静态数组不在方法内，所以无法覆盖
        static $arr = [];

        foreach ($data as $key => $val) {
            if ($val['pid'] == $pid) {
                //新增一个字段，字段代表分割表示，  str_repeat 重复替换（第一个参数重复替换的字符串，要替换的次数）
                $val['html'] = str_repeat($html, $level * 2);

                //新增字段，级别加1
                $val['level'] = $level + 1;

                $arr[] = $val;

                $this->treeLevel($data, $val['id'], $html, $val['level']);
            }
        }

        return $arr;
    }
}
